package code05_方法;

/**
 * @author 黄衡熙
 * @version 1.0
 * @date 2025年07月17日10:09
 */
public class Test02_练习 {

    public static void main(String[] args) {
//        int evenSum = sum(100);
//        int oddSum = sum(99);
//        System.out.println(evenSum);
//        System.out.println(oddSum);

//        int sum = sum2(2,3,10);
//        System.out.println(sum);
//        System.out.println(sum2(3,4,20));

        System.out.println(pow(2, 2));
        System.out.println(pow(2, 0));
        System.out.println(pow(2, -2));
    }

    /**
     * 根据传递的参数值进行判断,如果n是一个奇数,则求n以内的奇数之和,如果n是一个偶数,则求n以内的偶数之和
     * @param n
     * @return
     */
    public static int sum(int n) {
        int oddSum = 0, evenSum = 0;
        for (int i = 1; i <= n; i++) {
            if (i % 2 == 0) {
                evenSum += i;
            } else {
                oddSum += i;
            }
        }
        // 判断参数n是奇数还是偶数
        if (n % 2 == 0) {
            return evenSum;
        }
        return oddSum;
    }

    /**
     * 求1‐n之内能被num1和num2整除的数字之和
     * @param num1
     * @param num2
     * @param n
     * @return
     */
    public static int sum2(int num1, int num2, int n) {
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            if (i % num1 == 0 && i % num2 == 0) {
                sum += i;
            }
        }
        return sum;
    }

    /**
     * 计算x的y次方,定义方法实现,不允许使用Math提供的方法
     * @param x
     * @param y
     * @return
     */
    public static double pow(int x, int y) {
        double result = 1;
        if (y == 0) {
            result = 1;
        } else if (y > 0) {
            // 表示一共需要乘以几次x
            // 每遍历一次,乘以一次x
            for (int i = 1; i <= y; i++) {
                result = result * x;
            }
        } else {
            for (int i = 1; i <= -y; i++) {
                result = result * x;
            }
            result = 1.0 / result;
        }
        return result;
    }

}